package demo1;
//写一个泛型类含一个求最大值的方法
class Cm <E extends Comparable<E>>{
    public E max(E [] array){
        E max=array[0];
        for(int i=0;i< array.length;i++){
            if(max.compareTo(array[i])<0){
                max=array[i];
            }
        }
        return max;
    }
}
//泛型方法
class Cm2{
    public <E extends Comparable<E>> E max2(E [] array){//<E extends Comparable<E>>表明这是一个泛型方法且含上界约束，<>外的E是返回值
        E max=array[0];
        for(int i=0;i< array.length;i++){
            if(max.compareTo(array[i])<0){
                max=array[i];
            }
        }
        return max;
    }
}
class Cm3{
    public static <E extends Comparable<E>> E max3(E [] array){
        E max=array[0];
        for(int i=0;i< array.length;i++){
            if(max.compareTo(array[i])<0){
                max=array[i];
            }
        }
        return max;
    }
}
public class COMP {
    public static void main(String[]args){
        Integer [] array={1,2,3,5,7,9,0,6};
        Cm <Integer> cm=new Cm<>();//变量类型声明必须带泛型类型，可省略构造方法的的泛型类型
       int n= cm.max(array);
       System.out.println("泛型类求数组最大值是"+n);
       Cm2  m=new Cm2();
      int w= m.max2(array);
       System.out.println("泛型方法求数组最大值为："+w);
       int s=Cm3.max3(array);
       System.out.println("静态泛型方法求数组的最大值为："+s);
    }


}
